﻿using System;
namespace Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg {
    
    
    public class XOiguslikuVormiAlaliik : global::Xtee.Core.Schema.XsdString {
        
        public const string TAVALINEMITTETULUNDUSÜHING = "TAVA";
        
        public const string ERAKOND = "ERAK";
        
        public const string KORTERIÜHISTU = "KORÜH";
        
        public const string ELAMUÜHISTU = "ELÜH";
        
        public const string MUUMITTETULUNDUSÜHISTU = "MUU";
        
        public const string AMETIÜHING = "AMETÜ";
        
        public const string LISAVASTUTUSEGATULUNDUSÜHISTU = "LTÜH";
        
        public const string LIIKMETEISIKLIKUVASTUTUSEGATULUNDUSÜHISTU = "ITÜH";
        
        public const string PIIRATUDVASTUTUSEGATULUNDUSÜHISTU = "PTÜH";
        
        public const string KIRIK = "KIRIK";
        
        public const string KOGUDUSTELIIT = "KOGL";
        
        public const string KOGUDUS = "KOGUD";
        
        public const string KLOOSTER = "KLOOS";
        
        public const string KOHALIKUOMAVALITSUSEÜKSUSTELIIT = "KOYL";
        
        public const string HOONEÜHISTU = "HÜ";
        
        public const string LOOMELIIT = "LLIIT";
        
        public XOiguslikuVormiAlaliik(string value) : 
                base(value) {
            this.Validate();
            string annot = null;
            if (Value == "TAVA") {
                annot = "tavaline mittetulundusühing";
            }
            if (Value == "ERAK") {
                annot = "erakond";
            }
            if (Value == "KORÜH") {
                annot = "korteriühistu";
            }
            if (Value == "ELÜH") {
                annot = "elamuühistu";
            }
            if (Value == "MUU") {
                annot = "muu mittetulundusühistu";
            }
            if (Value == "AMETÜ") {
                annot = "ametiühing";
            }
            if (Value == "LTÜH") {
                annot = "lisavastutusega tulundusühistu";
            }
            if (Value == "ITÜH") {
                annot = "liikmete isikliku vastutusega tulundusühistu";
            }
            if (Value == "PTÜH") {
                annot = "piiratud vastutusega tulundusühistu";
            }
            if (Value == "KIRIK") {
                annot = "kirik";
            }
            if (Value == "KOGL") {
                annot = "koguduste liit";
            }
            if (Value == "KOGUD") {
                annot = "kogudus";
            }
            if (Value == "KLOOS") {
                annot = "klooster";
            }
            if (Value == "KOYL") {
                annot = "kohaliku omavalitsuse üksuste liit";
            }
            if (Value == "HÜ") {
                annot = "hooneühistu";
            }
            if (Value == "LLIIT") {
                annot = "loomeliit";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public XOiguslikuVormiAlaliik() : 
                base(string.Empty) {
        }
        
        public static bool TryParse(string value, out global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XOiguslikuVormiAlaliik result) {
            try {
                result = new global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XOiguslikuVormiAlaliik(value);
                return true;
            }
            catch (System.Exception ) {
                result = null;
                return false;
            }
        }
        
        public static implicit operator String (XOiguslikuVormiAlaliik value) {
            return value.Value;
        }
        
        public static implicit operator XOiguslikuVormiAlaliik (string value) {
            if (value==null) {
                return null;
            }
            return new XOiguslikuVormiAlaliik(value);
        }
    }
}
